<?php
 
header("Content-type: text/html; charset=utf-8");
 
define('APPID', 'wmj_T8lCr7t6fTc');
define('APPSECRET', 'rpwjSBEgdoBkod7YAYzlMpg6mH01DafX');
define('AESKEY', 'GaqpopNUMzgD8UsIceQZoP1vlbZLPZXY'); //AES加密密钥，需要和开放平台保持一致，否则会报错，如未启用加密，请留空
 
$lock_sn = 'WMJ18882784'; //锁的序列号，这个序列号贴在每个模块的标签上。
//$lock_sn = aesEncrypt($lock_sn, AESKEY);  //传递数据经过AES加密，如果需要的话就用。
 
/*
 * DEMO -- 提交模块到系统注册，注意：所有关于设备的操作，都需要先添加设备到系统才可以操作
 */
$postlock = httpPost('https://www.wmj.com.cn/api/postlock.html?appid='.APPID.'&appsecret='.APPSECRET, $lock_sn);
 
$postlock = trim($postlock, "\xEF\xBB\xBF"); //去除BOM头
print_r(json_decode($postlock, true));
 
/*
提交模块到系统注册  返回码说明
 
state：
1：成功
0：失败
state_code：
1：添加成功
0：添加失败
1001：参数错误或账户被禁用
1002：没有上传设备序列号（加密和不加密不统一也有会导致这个错误）
1003：设备序列号错误
1004：设备已存在，请勿重复添加（设备只能在系统中存在一次，如通过其他方式添加了设备，请先删除）
 
*/
 
/*
 * DEMO -- 开门接口
 */
$openlock = httpPost('https://www.wmj.com.cn/api/openlock.html?appid='.APPID.'&appsecret='.APPSECRET, $lock_sn);
 
$openlock = trim($openlock, "\xEF\xBB\xBF"); //去除BOM头
print_r(json_decode($openlock, true));
 
/*
开门接口  返回码说明
 
state：
1：成功
0：失败
state_code：
1：开门成功
0：开门失败
2001：参数错误或账户被禁用
2002：没有上传设备序列号（加密和不加密不统一也有会导致这个错误）
2003：设备序列号错误
2004：设备不存在
2005：无权限操作（出现这个错误是因为设备不是通过此appid添加的）
2006：连接服务器出错，请重试（此服务器是模块操作服务器）
 
*/
 
/*
 * DEMO -- 删除模块接口
 */
$dellock = httpPost('https://www.wmj.com.cn/api/dellock.html?appid='.APPID.'&appsecret='.APPSECRET, $lock_sn);
 
$dellock = trim($dellock, "\xEF\xBB\xBF"); //去除BOM头
print_r(json_decode($dellock, true));
 
/*
删除模块接口  返回码说明
 
state：
1：成功
0：失败
state_code：
1：删除成功
0：删除失败
4001：参数错误或账户被禁用
4002：没有上传设备序列号（加密和不加密不统一也有会导致这个错误）
4003：设备序列号错误
4004：设备不存在
4005：无权限操作（出现这个错误是因为设备不是通过此appid添加的）
 
*/
 
/*
 * DEMO -- 查询模块在线状态
 */
$lockstate = httpPost('https://www.wmj.com.cn/api/lockstate.html?appid='.APPID.'&appsecret='.APPSECRET, $lock_sn);
 
$lockstate = trim($lockstate, "\xEF\xBB\xBF"); //去除BOM头
print_r(json_decode($lockstate, true));
 
/*
查询模块在线状态  返回码说明
 
state：
1：成功
0：失败
state_code：
1：查询成功
0：查询失败
5001：参数错误或账户被禁用
5002：没有上传设备序列号（加密和不加密不统一也有会导致这个错误）
5003：设备序列号错误
5004：设备不存在
 
online
1：在线
0：不在线
 
*/
 
/*
 * DEMO -- SIM卡信息查询接口
 */
 
$sim_no = '#########'; //锁的SIM号码，和设备序列号一样，贴在设备上的。
//$sim_no = aesEncrypt($sim_no, AESKEY);  //传递数据经过AES加密，如果需要的话就用。
 
$sim = httpPost('https://www.wmj.com.cn/api/sim.html?appid='.APPID.'&appsecret='.APPSECRET, $sim_no);
 
$sim = trim($sim, "\xEF\xBB\xBF"); //去除BOM头
print_r(json_decode($sim, true));
 
/*
SIM卡信息查询接口  返回码说明
 
state：
1：成功
0：失败
state_code：
1：获取成功
0：获取失败
6001：参数错误或账户被禁用
6002：没有上传SIM号码（加密和不加密不统一也有会导致这个错误）
 
sim信息说明
msisdn：SIM卡业务号码
status：SIM号码状态
operator：运营商
expiration：SIM号码资费过期时间
totaldata：总流量
outdata：已使用流量
 
*/
 
/*
 *DEMO -- httpPost函数
 */
function httpPost($url, $str) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_TIMEOUT, 30);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($curl, CURLOPT_POSTFIELDS, $str);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($str))
    );
    $res = curl_exec ($curl);
    curl_close($curl);
 
    return $res;
}
 
/*
 * AES加密 -- 加密采用128位CBC模式加密
 */
function aesEncrypt ($value, $key) {
    $padSize = 16 - (strlen($value) % 16);
    $value   = $value . str_repeat(chr($padSize), $padSize) ;
    $output  = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $value, MCRYPT_MODE_CBC, str_repeat(chr(0), 16));
 
    return base64_encode($output);
}